package com.whfc.fuum.dao;

import com.whfc.fuum.dto.SysMachListDTO;
import com.whfc.fuum.dto.SysMachTypeDTO;
import com.whfc.fuum.entity.SysMachType;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface SysMachTypeMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(SysMachType record);

    int insertSelective(SysMachType record);

    SysMachType selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(SysMachType record);

    int updateByPrimaryKey(SysMachType record);

    /**
     * 根据ID查询
     *
     * @param id
     * @return
     */
    SysMachType selectById(@Param("id") Integer id);

    /**
     * 根据code查询
     *
     * @param code
     * @return
     */
    SysMachType selectByCode(@Param("code") String code);

    /**
     * 根据ID查询父节点name
     *
     * @param machTypeId
     * @return
     */
    @Deprecated
    String selectParentById(@Param("machTypeId") Integer machTypeId);

    /**
     * 根据code查询父节点name
     *
     * @param code
     * @return
     */
    @Deprecated
    String selectParentByCode(@Param("code") String code);

    /**
     * 根据code查询父节点
     *
     * @param code
     * @return
     */

    SysMachTypeDTO selectParentDTOByCode(@Param("code") String code);

    /**
     * 根据ID查询父节点
     *
     * @param machTypeId
     * @return
     */
    SysMachTypeDTO selectParentDTOById(Integer machTypeId);

    /**
     * 根据code查询父节点
     *
     * @param machTypeId
     * @return
     */
    SysMachTypeDTO selectParentDTOByMachTypeId(@Param("machTypeId") Integer machTypeId);

    /**
     * 查询全部数据
     *
     * @return
     */
    List<SysMachListDTO> selectAll();

    /**
     * 查询字节点数据
     *
     * @param pid
     * @param keyword
     * @return
     */
    List<SysMachTypeDTO> selectByPid(@Param("pid") Integer pid, @Param("keyword") String keyword,@Param("state") Integer state);

    /**
     * 删除
     *
     * @param machTypeId
     */
    void deleteById(@Param("machTypeId") Integer machTypeId);

    /**
     * 启用/禁用
     *
     * @param machTypeId
     * @param state
     */
    void enable(@Param("machTypeId") Integer machTypeId, @Param("state") Integer state);

    /**
     * 根据设备名称模糊查找设备类型
     *
     * @param machName 设备名称
     * @return 设备类型
     */
    SysMachTypeDTO selectByLikeMachName(@Param("machName") String machName);
}
